import type { IStorage } from '../types';

// SessionStorageImpl 类：封装 sessionStorage 的操作，提供统一的存储接口实现
// 实现 IStorage 接口，支持设置、获取、移除、清空和判断键是否存在

class SessionStorageImpl implements IStorage {
	/**
	 * 设置指定 key 的值
	 *
	 * @param key 键名，类型为 string
	 * @param value 键值，类型为 string
	 * @returns 无返回值
	 */
	setItem(key: string, value: string): void {
		sessionStorage.setItem(key, value);
	}

	/**
	 * 获取指定 key 的值
	 *
	 * @param key 键名，类型为 string
	 * @returns 对应的值，类型为 string 或 null
	 */
	getItem(key: string): string | null {
		return sessionStorage.getItem(key);
	}

	/**
	 * 移除指定 key 的项
	 *
	 * @param key 键名，类型为 string
	 * @returns 无返回值
	 */
	removeItem(key: string): void {
		sessionStorage.removeItem(key);
	}

	/**
	 * 清空所有存储项
	 *
	 * @returns 无返回值
	 */
	clear(): void {
		sessionStorage.clear();
	}

	/**
	 * 判断指定 key 是否存在
	 *
	 * @param key 键名，类型为 string
	 * @returns 存在返回 true，不存在返回 false
	 */
	keyExists(key: string): boolean {
		return sessionStorage.getItem(key) !== null;
	}
}

export default SessionStorageImpl;
